//
//  UIImage+MSImage.h
//  PeopleForTheFirstMall
//
//  Created by iOS on 2017/11/8.
//  Copyright © 2017年 MS. All rights reserved.
//

#import <UIKit/UIKit.h>

typedef NS_ENUM(NSUInteger, GradientType) {
    GradientTypeTopToBottom = 0,//从上到下
    GradientTypeLeftToRight = 1,//从左到右
    GradientTypeUpleftToLowright = 2,//左上到右下
    GradientTypeUprightToLowleft = 3,//右上到左下
};

@interface UIImage (MSImage)

/**
 根据颜色生成image
 
 @param color color
 @return image
 */
+ (UIImage *)ms_imageWithColor:(UIColor *)color;
/**
 根据颜色生成指定大小image
 
 @param size 图片大小
 @param color 颜色
 @return image
 */
+ (UIImage *)ms_imageWithColor:(UIColor *)color
                          size:(CGSize)size;
/**
 根据颜色生成指定大小圆角image
 
 @param size 图片大小
 @param color 颜色
 @param cornerRadius 圆角半径
 @return image
 */
+ (UIImage *)ms_imageWithColor:(UIColor *)color
                          size:(CGSize)size
                  cornerRadius:(CGFloat)cornerRadius;
/**
 根据颜色数组生成指定大小image
 
 @param colors 渐变颜色数组
 @param gradientType 渐变样式
 @param imgSize 图片大小
 @return 颜色->图片
 */
+ (UIImage *)ms_imageFromColors:(NSArray<UIColor *> *)colors
                   gradientType:(GradientType)gradientType
                        imgSize:(CGSize)imgSize;
/**
 生成二维码图片
 
 @param string 二维码字符串
 @param Imagesize 二维码图片大小，设置太小可能会导致生成的二维码无法被识别
 @param waterImagesize logo大小
 @return 二维码图片
 */
+ (UIImage *)ms_imageForString:(NSString *)string
                     imageSize:(CGFloat)Imagesize
                 logoImageSize:(CGFloat)waterImagesize;
/** 根据view生成图片（opaque 表示是否是非透明的。如果需要显示半透明效果，需要传NO，否则传YES.） */
+ (UIImage *)ms_imageWithView:(UIView *)view
                     withSize:(CGSize)size
                       opaque:(BOOL)opaque;
/** 获取视频的第一帧截图, 返回UIImage */
+ (UIImage*)ms_getVideoPreViewImageWithPath:(NSURL *)videoPath;
/** 改变图片颜色 */
-(UIImage*)imageChangeColor:(UIColor*)color;
/** 识别图中二维码 */
- (NSString *)ms_getQRCodeInfo;
/** 压缩图片尺寸到自定大小 */
- (UIImage *)ms_compressForWidth:(CGFloat)defineWidth;
/** 修改图片大小 */
- (UIImage *)ms_scaleToSize:(CGSize)newsize;
/** 旋转图片 */
-(UIImage*)ms_rotateImageWithDegree:(CGFloat)degree;
/**
 压缩图片(质量压缩+大小压缩)，优先采用质量压缩，如过还是大于自定大小，则进行大小压缩直到指定大小
 
 @param maxLenght 最大字节
 @return 压缩后的data
 */
- (NSData *)ms_compressToMaxLength:(NSInteger)maxLenght;
/** 计算图片大小 */
- (NSString *)ms_imageDataSize;

@end
